home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Amiga Format CD 41
/
Amiga Format CD41 (1999-06)(Future Publishing)(GB)[!][issue 1999-07].iso
/
-seriously_amiga-
/
misc
/
mmulib
/
mmulib.readme
< prev
next >
Wrap
Text File
|
1999-04-19
|
12KB
|
296 lines
Short: Library to ctrl the MC68K MMUs, beta
Uploader: thor@math.tu-berlin.de (Thomas Richter)
Author: thor@math.tu-berlin.de (Thomas Richter)
Type: util/libs
Requires: Os 2.04, a 68020/68851, 68030, 68040 or 68060 with a working MMU
Version: 0.26
-----------------------------------------------------------------------------
Release 0.26
------------
- Fixed a bug in the exception handling, forgot to restore a6.
- Fixed the return value of RebuildTree(). It's now TRUE on
success, not DOSTRUE.
- Fixed a bug in the table builder, merged sub-tree were released
incorrectly.
- Added the WithoutMMU() LVO entry.
- Removed the AllocLineMem() LVO, this one was useless.
Release 0.25
------------
- Debugged 060 exception handler again. Found only one bug, ROM
emulation was broken.
- Enhanced AbsExecBase accesses - does no longer block interrupts
unnecessary.
- Fixed parts of the exception handler to read the faulty instruction
from the correct function code space.
- Added a complicated test for the EC030 processor that should
finally work.
- Enabled the MMULib internal exception handler test.
- Removed all accesses to the ppc.library and reserved entries.
PPC.lib compatibility is no longer an issue for me. The MMU.lib
is WarpOs-compatible, though, as long as the system isn't
infected by Ralph's "software".
- Added a safety test in the MMUCacheTest program to avoid
hangs.
-----------------------------------------------------------------------------
Compatibility warnings and bad software:
- The MMU tables generated by the "CPU FastROM" command, an official CBM tool,
are simply wrong if run on a 030 processor. Chip memory is marked as
"cacheable", which is plain wrong. Already spoke to Michael Sinz who agrees
in that point. Don't use it, run "MuFastRom" instead.
- The MMU tables build by "SetCPU FastRom" are not very well suited for
MuForce. The MMU library will replace the table layout by something more
adapted.
Since these programs may install a "bogus" exception vector, you shouldn't
run both programs with the "FastROM" option. If you absolutely want to do,
run them *before* installing any MMU.lib related program and COP - remember,
you have been warned. "MuFastROM" will do better once the library is finished.
- CMQ060.lha from the Aminet: This program uses the MOVE16 instruction to
"speed up" the copy mem routines of the Os. Besides that the speedup is
minimal, you should be informed that this instruction is not fully
supported by the Amiga hardware. A MOVE16 into the chip memory could yield
to "strange and wonderful things", and may or may not work. Its burst
accesses simply don't fit into the DMA access mechanism of the Amiga
custom chips. (Note that no other instruction will try burst accesses
into non-cacheable memory!)
Moreover, if a MOVE16 crashes, the mmu.library is out of buisiness, it will
simply guru. Do not run this program!
MOVE16 is one of the non-supported instructions in an Amiga system, others
are TAS, CAS and CAS2 (which are of little use in a single processor system).
For more detailed information of MOVE16, check either the enforcer.guide or
the motorola documentation, I'm not making this up, and this is not
mmu.library related.
Release 0.21
------------
- Tiny adjustments of the 060 handler of the library, now tested.
- Forgot to fill in the SSP in the exception handler, this caused
MuForce crashes.
- INTRO option of MuForce was broken. I thought this is simply too
easy to make mistakes, but I was wrong. *SIGH*
- Added more options for "MuFastRom".
- Included up-to-date version of MMUCacheTest... Ooops.
- Included the MuOmniSCSIPatch, with the friendly permisson of
Ralph Babel. For details, read the guide of this program.
- Forgot to setup the dfc correctly for single page flushes.
This could have caused hangs in case of zero-page access, for
example.
This release has been successfully tested on a 030, a 040 and a 060. Should
work fine for your system, too, as long as the ppc.library is not used.
Release 0.20
------------
Just too much changed: To keep the story short:
- Lots of bug fixes.
- Exception handlers have been written and tested.
- MuTools have been written:
MuFastROM remaps the ROM to RAM,
MuFastZero remaps the autovectors from chip to fast
without touching the VBR.
MuForce is an option compatible enforcer replacement.
MuScan prints the MMU table.
The release 0.20 is the first "fully working modulo bugs"
version.
Known Bugs:
-----------
The MMU table manager rebuilds currently the MMU tables for a
complete memory block even if only a minor sub-block was changed.
Therefore, it may take longer to build the MMU table than absolutely
required.
The MMU library builds currently 68030 MMU tables with the
REPAIRABLE flag set less efficient than it could.
The library does not yet provide a mechanism to adjust the page
size, even though it is flexible enough to adapt to any page size
possible. This feature will be added in the form of tags to the
CreateContext() call.
The library does not yet contain a workaround for a 040 firmware
bug: If an illegal, line A, chk or unimplemented floating point
instruction is located at the last 16 bits of a page and the next
page is not available, the 040 generates an access fault instead
of the proper exception. The fault address is the address of the
missing page, and the PC points to the instruction in the preceeding
page.
These bugs will be fixed within the next releases of the library, including
all the other bugs you may find.
-----------------------------------------------------------------------------
Special thanks goes to:
-Ralph Babel for giving information about the CachePreDMA/CachePostDMA
functions.
-Carsten Schlote for starting development of a mmu.library aware 68060.lib.
-Michael Sinz (a real BIG thank you!) for discussing a lot of details of
CachePreDMA/CachePostDMA, for sending me the sources of these functions
in his 68040, and especially - and that's really great - for making the
Enforcer sources available and for allowing me to reuse the exception
handler of the Enforcer. This will happen in one of the next releases.
-Bjoern Schmidt for allowing me to run some tests on his 060.
-Werner Müller for his 040 based system.
-All the testers for running tests and sending me detailed information about
their systems.
Thank you to all of you, this project won't clearly possible without your
support!
Special thanks does not go to:
Ehem, fill in... Guess you know.
-----------------------------------------------------------------------------
Warning: This is "work in progress", it's by no means complete.
I'm in the urge need for testers and co-authors. Especially MC68060 systems
are very welcome for testing.
Please check the "ReadMe" in the archive for details how to contact me.
-----------------------------------------------------------------------------
Purpose and goal of this library:
The mmu.library is a planned basis for MMU (memory management) related
functions the MC68K family can perform. Up to now certain hacks are available
that program the MMU themselves (Enforcer,CyberGuard,GuardianAngle,SetCPU,
Shapeshifter,VMM,GigaMem...).
It's therefore not unexpected that these tools conflict with each other.
There's up to now no Os support for the MMU at all - the gap this mmu.library
is planned to fill.
The goal is to provide a basis of functions to address and program the MMU in
a hardware independent, Os friendly fashion. Hence, a future version of the
Enforcer will work together with virtual memory, and others.
The mmu.library is also the basis for a virtual memory project, the
memory.library. Even though the mmu.library does not provide virtual memory
itself, it builds the basics to allow an easy implementation and to avoid the
hacks required by other implementations so far.
For the design details of the mmu.library, consider reading the autodocs in
this archive. Everything is still VERY preliminary, there's still room for
changes and suggestions.
------------------------------------------------------------------------------
This distribution contains the full sources written so far, the documentation
and some C sample sources how to use the library, as well as the includes
and autodocs written so far. Check the ReadMe for details. Even if you're not
a developer, you could help me a lot by running a test program on your
computer and sending me the results. For details about testing - this
became a bit trickier - please consider the ReadMe.
------------------------------------------------------------------------------
The mmu.library development group:
This is a loose, non-commercial group of developers that support the
mmu.library by their work. If you want to join, please lemme know.
------------------------------------------------------------------------------
The THOR-Software Licence (v2, 24th June 1998)
This License applies to the computer programs known as the "mmu.library"
and its sources. The "Program", below, refers to such program. The
"Archive" refers to the package of distribution, as prepared by the author
of the Program, Thomas Richter. Each licensee is addressed as "you".
The Program and the data in the archive are freely distributable
under the restrictions stated below, but are also Copyright (c)
Thomas Richter.
Distribution of the Program, the Archive and the data in the Archive by a
commercial organization without written permission from the author to any
third party is prohibited if any payment is made in connection with such
distribution, whether directly (as in payment for a copy of the Program) or
indirectly (as in payment for some service related to the Program, or
payment for some product or service that includes a copy of the Program
"without charge"; these are only examples, and not an exhaustive enumeration
of prohibited activities).
However, the following methods of distribution
involving payment shall not in and of themselves be a violation of this
restriction:
(i) Posting the Program on a public access information storage and
retrieval service for which a fee is received for retrieving information
(such as an on-line service), provided that the fee is not
content-dependent (i.e., the fee would be the same for retrieving the same
volume of information consisting of random data).
(ii) Distributing the Program on a CD-ROM, provided that
a) the Archive is reproduced entirely and verbatim on such CD-ROM, including
especially this licence agreement;
b) the CD-ROM is made available to the public for a nominal fee only,
c) a copy of the CD is made available to the author for free except for
shipment costs, and
d) provided further that all information on such CD-ROM is redistributable
for non-commercial purposes without charge.
Redistribution of a modified version of the Archive, the Program or the
contents of the Archive is prohibited in any way, by any organization,
regardless whether commercial or non-commercial. Everything must be kept
together, in original and unmodified form.
Limitations.
THE PROGRAM IS PROVIDED TO YOU "AS IS", WITHOUT WARRANTY. THERE IS NO
WARRANTY FOR THE PROGRAM, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT
LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
PARTICULAR PURPOSE AND NONINFRINGEMENT OF THIRD PARTY RIGHTS. THE ENTIRE
RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD
THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY
SERVICING, REPAIR OR CORRECTION.
IF YOU DO NOT ACCEPT THIS LICENCE, YOU MUST DELETE THE PROGRAM, THE ARCHIVE
AND ALL DATA OF THIS ARCHIVE FROM YOUR STORAGE SYSTEM. YOU ACCEPT THIS
LICENCE BY USING OR REDISTRIBUTING THE PROGRAM.
Thomas Richter
-----------------------------------------------------------------------------
So long,
Thomas (February 1999)